#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

/*堆栈*/

void myTask(void *pvParameters)
{
    while (1)
    {
        // printf("myTask is running\n");
        vTaskDelay(pdMS_TO_TICKS(1000));
    }
}

void app_main(void)
{
    TaskHandle_t pxHandle;
    xTaskCreate(
        myTask,
        "myTask",
        1024, // 如果给任务分配的堆栈空间太小，设备如果堆栈溢出，然后设备重启
        NULL,
        1,
        &pxHandle);
    UBaseType_t iStack;
    while (1)
    {
        // 返回任务栈的剩余大小，如果任务栈的剩余大小大于任务栈的大小，返回0，设备重启
        // 因此可以通过这个函数估算任务所需要的堆栈空间
        iStack = uxTaskGetStackHighWaterMark(pxHandle);
        printf("stack is %d\n", iStack);

        vTaskDelay(pdMS_TO_TICKS(3000));
    }
}
